package commons.params.param_component;

import commons.utils.Properties_INI;
import java.util.ArrayList;
import java.util.Properties;
import javax.swing.JComponent;


public interface IParamComponent {
	
	public String getName();
	public JComponent getComponent();
	public boolean isNull();
	public void reinit();

	public Object getValue();
	public void setValue(Object val);

	public void setPossibleValues(ArrayList<String> possibleValues);
	public void setPossibleValues(ArrayList<String>[] possibleValues);

	public void writeToComponent();
	public void readFromComponent();

	public void storeInProperties (Properties_INI props);
	public boolean loadFromProperties (Properties_INI props);


	// Effectue a minima les tests suivants :
	//  - nullité de la valeur (autorisé ou non, suivant paramétrage)
	//  - format pour les paramètres ayant un format particulier (entier, reel, etc.)
	//  - si une liste de valeur est imposée pour certains éléments du paramètre
	//      (ex. pour un combo : 1 liste imposée, pour une table, éventuellement
	//       plusieurs listes imposées sur certaines colonnes)
	//     -> test si les valeurs du param font partie de la liste des valeurs possibles
	// doit demander l'invalidation du component si erreur
	// rappel, avant appel à 'makeStandardControls()', le ParamsManager valide par défaut
	//  tous les components, donc ce n'est pas la peine de le faire si pas d'erreur renonctrées
	public void makeStandardControls();

	public void invalidateComponent(String errMsg, boolean bDrawInvalidBorder);
	public void validateComponent();
	
}
